A multi-process service (MPS) is an alternative, binary-compatible implementation of a parallel processing application programming interface (API). The MPS runtime architecture can be designed to transparently enable cooperative multi-process parallel-processing applications. For example, parallel programming kernels may be processed concurrently on the same graphics processing unit (GPU), allowing for better performance when the GPU's compute capacity is underutilized by a single application.
Parallel processing multi-process services allow multiple parallel processing processes to share a single GPU hardware context. This can be useful for applications that have very low occupancy (that is, they do not use up all the processing resources of the GPU), where multiple processes can help utilize the GPU better. However, because the hardware context is shared, there is no fault isolation, and so one faulting MPS client can cause all clients to be torn down.